#include <iostream>
#include <vector>
#include <unordered_map>

std::vector<int> FindNumsAppearOnce(std::vector<int>& nums) 
{
    // 定义结果容器
    std::vector<int>res;

    int n = nums.size();
    // 按位或操作能把按位或之后的结果推出来
    // 
    int sum = 0;
    for (auto i : nums)
    {
        sum^=i;
    }
    // ok ,接下来。。。。
    std::unordered_map<int,int>mp;
    // 和数组中找出和位目标值的两个数字一样
    // 按位异或两次可以抵消？？？？？

    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了
    // 要被Jiwoo可爱死了

    for (auto i : nums)
    {
        // 遍历vector容器，如果存在
        if (mp.find(sum^i) != mp.end())
        {
            res.push_back(i);
            res.push_back(sum^i);
            break;
        }
        else 
        {
            mp[sum^i] = i;
        }
    }
    
    return res;
}


int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    //
    std::vector<int>v;
    v.push_back(10);
    v.push_back(2);
    v.push_back(10);
    v.push_back(10);
    v.push_back(10);
    v.push_back(3);
    v.push_back(10);

    // 直接创建哈希表？？？
    std::unordered_map<int,int>mp;
    for (auto i : v)
    {
        mp[i]++;
    }

    // 
    int len = v.size();
    for (auto i : v) 
    {
        if (mp[i]>len/2+1)
        {
            std::cout<<i<<std::endl;
            return 0;
        }
    }

    std::vector<int>raw;
    raw.push_back(1);
    raw.push_back(2);
    raw.push_back(2);
    raw.push_back(3);

    std::vector<int>result = FindNumsAppearOnce(raw);
    for (auto i :result)
    {
        std::cout<<i<<std::endl;
    }

    return 0;
}